`
https://leetcode.cn/problems/minimum-insertions-to-balance-a-parentheses-string/
`

/**
 * @param {string} s
 * @return {number}
 */
var minInsertions = function (s) {
  // 插入次数，对右括号的需求
  let ins = 0, needRight = 0;
  for (const c of s) {
    // 一个左括号对应两个右括号
    if (c === '(') {
      needRight += 2;
      // 如果需要的右括号是奇数的话
      if (needRight % 2 === 1) {
        // 插入一个右括号
        ins++;
        // 对右括号的需求减一
        needRight--;
      }
    } else {
      needRight--;
      // 说明右括号太多了
      if (needRight === -1) {
        // 需要插入一个左括号
        ins++;
        // 同时，对右括号的需求变为 1
        needRight = 1;
      }
    }
  }
  return ins + needRight;
};